package com.alex.designPattern.factory.simpleFactory;

import com.alex.designPattern.AbstractDao;
import com.alex.designPattern.DaoType;
import com.alex.designPattern.HibernateDao;
import com.alex.designPattern.IbatitsDao;

public class DaoFactory {
	
	/**
	 * 简单工厂通过参数在方法内部判断应该创建哪种产品。
	 * 优点：简单。
	 * 缺点：当有新类型的产品时，需要修改工厂中创建对象的方法，不符合开闭原则。
	 * 应用：适用于产品类型固定的场景。
	 * @param type 产品类型
	 * @return
	 */
	public static AbstractDao getDao(DaoType type){
		AbstractDao dao = null;
		if(type != null){
			switch(type){
				case HIBERNATE : 
					dao = new HibernateDao();
					break;
				case IBATITS : 
					dao = new IbatitsDao();
					break;
			}
		}
		return dao;
	}
}
